{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用Seaborn\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import sys\n",
    "sys.path.insert(0, '/Users/sundong/Desktop/个人/AQF/gitcafe/abu/')\n",
    "from abupy import ABuSymbolPd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "      <th>pre_close</th>\n",
       "      <th>p_change</th>\n",
       "      <th>date</th>\n",
       "      <th>date_week</th>\n",
       "      <th>key</th>\n",
       "      <th>atr21</th>\n",
       "      <th>atr14</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-12-24</th>\n",
       "      <td>313.5</td>\n",
       "      <td>314.50</td>\n",
       "      <td>295.195</td>\n",
       "      <td>295.39</td>\n",
       "      <td>5559913</td>\n",
       "      <td>319.77</td>\n",
       "      <td>-7.624</td>\n",
       "      <td>20181224</td>\n",
       "      <td>0</td>\n",
       "      <td>313</td>\n",
       "      <td>18.7935</td>\n",
       "      <td>19.6343</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-26</th>\n",
       "      <td>300.0</td>\n",
       "      <td>326.97</td>\n",
       "      <td>294.090</td>\n",
       "      <td>326.09</td>\n",
       "      <td>8163138</td>\n",
       "      <td>295.39</td>\n",
       "      <td>10.393</td>\n",
       "      <td>20181226</td>\n",
       "      <td>2</td>\n",
       "      <td>314</td>\n",
       "      <td>20.0741</td>\n",
       "      <td>21.4004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-27</th>\n",
       "      <td>300.0</td>\n",
       "      <td>326.97</td>\n",
       "      <td>294.090</td>\n",
       "      <td>326.09</td>\n",
       "      <td>8163138</td>\n",
       "      <td>326.09</td>\n",
       "      <td>0.000</td>\n",
       "      <td>20181227</td>\n",
       "      <td>3</td>\n",
       "      <td>315</td>\n",
       "      <td>21.2382</td>\n",
       "      <td>22.9310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-28</th>\n",
       "      <td>300.0</td>\n",
       "      <td>326.97</td>\n",
       "      <td>294.090</td>\n",
       "      <td>326.09</td>\n",
       "      <td>8163138</td>\n",
       "      <td>326.09</td>\n",
       "      <td>0.000</td>\n",
       "      <td>20181228</td>\n",
       "      <td>4</td>\n",
       "      <td>316</td>\n",
       "      <td>22.2966</td>\n",
       "      <td>24.2575</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-12-31</th>\n",
       "      <td>300.0</td>\n",
       "      <td>326.97</td>\n",
       "      <td>294.090</td>\n",
       "      <td>326.09</td>\n",
       "      <td>8163138</td>\n",
       "      <td>326.09</td>\n",
       "      <td>0.000</td>\n",
       "      <td>20181231</td>\n",
       "      <td>0</td>\n",
       "      <td>317</td>\n",
       "      <td>23.2587</td>\n",
       "      <td>25.4072</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             open    high      low   close   volume  pre_close  p_change  \\\n",
       "2018-12-24  313.5  314.50  295.195  295.39  5559913     319.77    -7.624   \n",
       "2018-12-26  300.0  326.97  294.090  326.09  8163138     295.39    10.393   \n",
       "2018-12-27  300.0  326.97  294.090  326.09  8163138     326.09     0.000   \n",
       "2018-12-28  300.0  326.97  294.090  326.09  8163138     326.09     0.000   \n",
       "2018-12-31  300.0  326.97  294.090  326.09  8163138     326.09     0.000   \n",
       "\n",
       "                date  date_week  key    atr21    atr14  \n",
       "2018-12-24  20181224          0  313  18.7935  19.6343  \n",
       "2018-12-26  20181226          2  314  20.0741  21.4004  \n",
       "2018-12-27  20181227          3  315  21.2382  22.9310  \n",
       "2018-12-28  20181228          4  316  22.2966  24.2575  \n",
       "2018-12-31  20181231          0  317  23.2587  25.4072  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Seaborn 是在Matplotlib基础上封装的更高级的API\n",
    "import seaborn as sns\n",
    "# 获取特斯拉电动车两年的股票\n",
    "tsla_df = ABuSymbolPd.make_kl_df('usTSLA', n_folds=2)\n",
    "tsla_df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/sundong/anaconda3/envs/learn/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c1e98fda0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 一行代码绘制直方图和概率密度图\n",
    "sns.distplot(tsla_df['p_change'], bins=80)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['open', 'high', 'low', 'close', 'volume', 'pre_close', 'p_change',\n",
       "       'date', 'date_week', 'key', 'atr21', 'atr14'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tsla_df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c1d67cbe0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制箱形图\n",
    "sns.boxplot(x='date_week', y='p_change', data=tsla_df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/sundong/anaconda3/envs/learn/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.JointGrid at 0x1c1fb36160>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 通过sns的jointplot()函数，可视化两组数据的相关性及概率密度分布\n",
    "sns.jointplot(tsla_df['high'], tsla_df['low'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# sns heatmap 绘制相关热力图\n",
    "goog = ABuSymbolPd.make_kl_df('usGOOG', n_folds=2)\n",
    "aapl = ABuSymbolPd.make_kl_df('usAAPL', n_folds=2)\n",
    "fb = ABuSymbolPd.make_kl_df('usFB', n_folds=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "bidu = ABuSymbolPd.make_kl_df('usBIDU', n_folds=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 合并多个股票的数据\n",
    "import pandas as pd \n",
    "change_p = pd.DataFrame({'tsla':tsla_df.p_change})\n",
    "# join usGOOG\n",
    "change_p = change_p.join(pd.DataFrame({'goog':goog.p_change}), how='outer')\n",
    "# join aapl\n",
    "change_p = change_p.join(pd.DataFrame({'aapl':aapl.p_change}), how='outer')\n",
    "# join usFB\n",
    "change_p = change_p.join(pd.DataFrame({'fb':fb.p_change}), how='outer')\n",
    "# join bidu\n",
    "change_p = change_p.join(pd.DataFrame({'bidu':bidu.p_change}), how='outer')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>tsla</th>\n",
       "      <th>goog</th>\n",
       "      <th>aapl</th>\n",
       "      <th>fb</th>\n",
       "      <th>bidu</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2017-09-26</th>\n",
       "      <td>0.061</td>\n",
       "      <td>0.262</td>\n",
       "      <td>1.773</td>\n",
       "      <td>0.835</td>\n",
       "      <td>0.712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-09-27</th>\n",
       "      <td>-1.222</td>\n",
       "      <td>2.266</td>\n",
       "      <td>0.672</td>\n",
       "      <td>2.113</td>\n",
       "      <td>1.579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-09-28</th>\n",
       "      <td>-0.399</td>\n",
       "      <td>0.593</td>\n",
       "      <td>-0.655</td>\n",
       "      <td>0.590</td>\n",
       "      <td>0.592</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-09-29</th>\n",
       "      <td>0.377</td>\n",
       "      <td>0.970</td>\n",
       "      <td>0.529</td>\n",
       "      <td>1.257</td>\n",
       "      <td>2.611</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-10-02</th>\n",
       "      <td>0.018</td>\n",
       "      <td>-0.616</td>\n",
       "      <td>-0.156</td>\n",
       "      <td>-0.808</td>\n",
       "      <td>0.388</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             tsla   goog   aapl     fb   bidu\n",
       "2017-09-26  0.061  0.262  1.773  0.835  0.712\n",
       "2017-09-27 -1.222  2.266  0.672  2.113  1.579\n",
       "2017-09-28 -0.399  0.593 -0.655  0.590  0.592\n",
       "2017-09-29  0.377  0.970  0.529  1.257  2.611\n",
       "2017-10-02  0.018 -0.616 -0.156 -0.808  0.388"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "change_p = change_p.dropna()\n",
    "change_p.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c2a58a860>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 协方差计算每组数据的协方差\n",
    "corr = change_p.corr()\n",
    "_, ax = plt.subplots(figsize=(8,5))\n",
    "# sns heatmap 热力图展示每组股票涨跌幅的相关性\n",
    "sns.heatmap(corr, ax=ax)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据可视化的目的是通过可视化更直观深入的理解数据，发现数据之间的关系，但是热力图不明显；\n",
    "# 尽管热力图看起来很高大上，但是在实际项目中一定要从实际目的需求出发"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
